package com.meatball.authorization.service

import com.meatball.authorization.data.dto.CreateUserParams
import com.meatball.authorization.data.dto.UpdateUserParams
import com.meatball.authorization.data.dto.UserResponse
import com.meatball.authorization.data.entity.RoleEntity
import com.meatball.authorization.data.entity.UserEntity
import org.springframework.security.core.userdetails.User
import java.util.Optional

/**
 * TODO 用户管理服务层
 *
 * @author 张翔宇
 * @since 2024年3月26日
 */
interface UserService {
    /**
     * TODO 新增用户
     *
     * @param data 参数
     */
    fun crate(data: CreateUserParams)
    /**
     * TODO 查询用户列表
     *
     * @return list
     */
    fun readAll() : Iterable<UserResponse>

    /**
     * TODO 根据用户ID查询所有的角色名称
     *
     * @param username
     * @return
     */
    fun findRolesByUsername(username: String): List<String>

    /**
     * TODO 根据ID查询数据
     *
     * @param id
     */
    fun readById(id: Long): Optional<UserEntity>

    /**
     * TODO 更新用户信息
     *
     * @param params 参数
     */
    fun update(id: Long, params: UpdateUserParams)

    /**
     * TODO 删除用户信息
     *
     * @param id
     */
    fun delete(id: Long)
}